import { Injectable } from '@nestjs/common';
import * as NodeRSA from 'node-rsa';

@Injectable()
export class RsaService {
  // key 实例
  // 一般不需要替换
  // 服务启动时,会创建一次
  private rsaKey: NodeRSA | undefined;

  constructor() {
    // 创建 key
    // 参数 { b: 512 } 似乎是必须的, 否则有bug
    // 前端创建 key 时,也要使用同样的参数
    this.rsaKey = new NodeRSA({ b: 512 });
  }

  public getPublicKey() {
    return this.rsaKey.exportKey('public');
  }

  public encrypt(data: string): string {
    return this.rsaKey.encrypt(data, 'base64');
  }

  public decrypt(data: string): string {
    return this.rsaKey.decrypt(data, 'utf8');
  }
}
